Functionality Management via Application Modification

ABSTRACT

Methods, systems, apparatuses, and/or computer-readable media for providing device management via application modification may be provided. In some embodiments, upon receiving a request to perform an action associated with an application, a determination as to whether performing the action will utilize a metered resource may be made. If so, a further determination may be made as to whether the request complies with at least one cost compliance policy and, in response to determining that the request complies with the at least one cost compliance policy, the action may be caused and/or authorize to be performed.

BACKGROUND

Device functionality management provides options for controlling thebehavior of devices through provision of a software development kit(SDK), application wrapping, and compliance rules. In some situations,applications executing on mobile devices may consume large amounts ofdata. Since many telecommunications providers allot only a certainamount of data per billing cycle, it is easy for such applications toexceed the allotment and incur additional charges. Similarly, pre-paidplans offer a limited amount of data before additional payments arerequired. Furthermore, mobile devices operating outside of their homearea (e.g., roaming internationally) may also incur significant charges.Additionally, mobile devices are typically battery powered, and networkoperations, such as receiving and transmitting data, often comprisebattery-intensive operations. Conventional approaches simply continue totransmit data and incur additional charges, and allow the device torapidly deplete its battery power.

SUMMARY

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter. Neither is thisSummary intended to be used to limit the claimed subject matter's scope.

Methods, systems, apparatuses, and/or computer-readable media forproviding device management via application modification may beprovided. In some embodiments, upon receiving a request to perform anaction associated with an application, a determination as to whetherperforming the action will utilize a metered resource may be made. Ifso, a further determination may be made as to whether the requestcomplies with at least one cost compliance policy and, in response todetermining that the request complies with the at least one costcompliance policy, the action may be caused and/or authorize to beperformed.

It is to be understood that both the foregoing general description andthe following detailed description are examples and explanatory only,and should not be considered to restrict the disclosure's scope, asdescribed and claimed. Further, features and/or variations may beprovided in addition to those set forth herein. For example, embodimentsof the disclosure may be directed to various feature combinations andsub-combinations described in the detailed description.

BRIEF DESCRIPTION OF THE DRAWINGS

Many aspects of the present disclosure can be better understood withreference to the following diagrams. The drawings are not necessarily toscale. Instead, emphasis is placed upon clearly illustrating certainfeatures of the disclosure. Moreover, in the drawings, like referencenumerals designate corresponding parts throughout the several views. Inthe drawings:

FIG. 1 is a block diagram of a user device;

FIG. 2 is a block diagram of an operating environment for providingdevice management;

FIG. 3 is a block diagram of a platform library associated with the userdevice; and

FIG. 4 is a flow chart illustrating a method for device functionalitymanagement.

DETAILED DESCRIPTION

The following detailed description refers to the accompanying drawings.Wherever possible, the same reference numbers are used in the drawingsand the following description to refer to the same or similar elements.While embodiments of the disclosure may be described, modifications,adaptations, and other implementations are possible. For example,substitutions, additions, or modifications may be made to the elementsillustrated in the drawings, and the methods described herein may bemodified by substituting, reordering, or adding stages to the disclosedmethods. Accordingly, the following detailed description does not limitthe disclosure. Instead, the proper scope of the disclosure is definedby the appended claims.

Device functionality management may be provided. Specifically,management of metered resources such as data usage and battery power maybe optimized to reduce overage charges and prioritize applications asbattery power is depleted. In some embodiments, methods, systems, and/orapparatuses may be provided to aid in ensuring that a device's dataplan/subscription does not run out or exceed a monthly allocation. Insome embodiments, methods, systems, and/or apparatuses may be providedto preserve battery life and aid in ensuring that the battery level doesnot run out. For example, features that are battery/data intensive, suchas data transmission protocols, global positioning services, etc. may berestricted to wireless rather than cellular networks and/or home regionsrather than areas in which a mobile device may be subject to a roamingsurcharge.

The technical effects of some embodiments of this disclosure may includeestablishing control of access to networks and assets when access listsmay not be predefined, and reducing and/or eliminating the burden ofpredefining access lists to control access to networks and assets.Moreover, the technical effects of some embodiments may includeenhancing network access control by assigning specific access rightsbased on access lists to client devices authorized to access associatednetwork beacons and assets.

Other technical effects of some embodiments of this disclosure may offergroup management solutions to managing content access and distribution.For example, users of a sales group may have read access to marketingdocuments and presentations, while users in a marketing group may beable to edit and/or annotate the market documents. Similarly, users inan accounting or business services group may be the only ones withaccess to enterprise financial documents. These access controls may beprovided by distributing authorization credentials to devices associatedwith users of the respective group. Each user may then authenticate totheir device, such as by inputting a username, password, authenticationkey, and/or biometric data, before the device may access and/or retrievethe content authorized for distribution to that device. Theseauthentication types are provided as examples only and are not intendedto be limiting as many other types of user authentication are in useand/or may be contemplated in the future.

Content access may be further limited by policies that enforce othercompliance restrictions based on properties of the device such as time,location, device security and/or integrity, presence of another device,software versions, required software, etc. For example, educationalsettings may designate student and instructor groups. These groups maybe further assigned to specific classes such that only student groupmembers associated with a given class may access content associated withthat class. Further, edit access to the content for the class may berestricted to the user(s) in the instructor group and/or student groupmembers may be permitted to add content that only the instructor mayview (e.g., homework assignments.) In some embodiments, the instructorgroup user(s) may be able to push content to student group user(s)and/or activate temporary control of the students' devices to preventthe devices from accessing non-class related content during class time.

To reduce the cost of ownership of user devices and cellular and/or dataservice charges associated with use of such user devices, an enterprisesuch as an educational institution and/or a business may implement a“bring your own device” (BYOD) policy to allow an employee to usehis/her personal device to access enterprise assets rather than providethe user with an enterprise owned user device for such purpose. Tosupport such a BYOD policy, a user device administrator (i.e. ITadministrator) may manage a group of personally owned user devices, viaa management application executed by a management server incommunication with the user devices over a network, to provide the userdevices with secure access to enterprise assets.

The user device administrator may enroll user devices into themanagement system to monitor the user devices for securityvulnerabilities and to configure the user devices for secure access toenterprise assets. The user device administrator may create and/orconfigure at least one configuration profile via a user interfaceprovided by the management system. A configuration profile may comprisea set of instructions and/or settings that configure the operationsand/or functions of a user device, which may ensure the security of theaccessed assets. The user device administrator may, for instance,configure an enterprise email configuration profile by specifying thenetwork address and access credentials of an enterprise email accountthat the users of the user devices are authorized to access. Otherconfiguration policies may include, but are not limited to, hardware,software, application, function, cellular, text message, and data userestrictions, which may be based at least in part on the current timeand/or location of the restricted user device. The user deviceadministrator may thereafter deploy the configuration profiles tospecific user devices, such as to groups of user devices of users withsimilar roles, privileges and/or titles.

Access credentials may uniquely identify a client device and/or the userof the client device. For example, the access credentials for a user maycomprise a username, a password, and/or biometric data related to facialrecognition, retina recognition, fingerprint recognition, and the like.Access credentials related to a device may uniquely identify the deviceand may comprise, for example, a unique hardware identifier such as aGUID (Globally Unique Identifier), UUID (Universally Unique Identifier),UDID (Unique Device Identifier), serial number, IMEI (InternationallyMobile Equipment Identity), Wi-Fi MAC (Media Access Control) address,Bluetooth MAC address, a CPU ID, and/or the like, or any combination oftwo or more such hardware identifiers. Additionally, the accesscredentials may be represented by a unique software identifier such atoken or certificate, based at least in part on the aforementionedunique hardware identifiers.

The user devices may also have access to personal configuration profilesthat may be created by the users of the user devices. The user devicesmay, for instance, have access to a personal email configuration profilethat was created by a user of the user device to provide access to herpersonal email account. Thus, a user device enrolled in a BYODmanagement system may have more than one configuration profile for agiven use of the user device, such as a personal email configurationprofile and an enterprise email configuration profile that are both usedfor accessing email accounts on the user device.

The user devices may be instructed to enable and/or disable certainconfiguration profiles according to authorization rights specified bythe user device administrator, such as location and/or time-basedauthorization rights. For example, a BYOD policy may specify that userdevices enrolled in the BYOD management system are authorized forpersonal use outside of the workday and are authorized for business useduring the workday. Similarly, a BYOD device may be restricted toenterprise uses while in work locations and/or prohibited from accessingenterprise assets while outside of secure work locations. To implementsuch a policy, a user device administrator may instruct the user devicesto toggle between personal configuration policies and enterpriseconfiguration policies based on factors such as the current time and/orlocation associated with the user device.

The current time may be based on the current time at the currentlocation of the user device, which may be determined by GPS, Wi-Fi,Cellular Triangulation, etc., or may be based on the current time at aconfigured primary location associated with the user device, which maybe the primary office location of an employee user of the user device.As an example, time-based configuration profile toggling may be providedby instructing a user device to enable business configuration profilesand disable personal configuration profiles while the current time isbetween 9 AM and 5 PM at the current location of the user device, and todisable business configuration profiles and enable personalconfiguration profiles while the current time is between 5 PM and 9 AMat the current location of the user device.

Consistent with embodiments of this disclosure, control over meteredresources may be provided. Metered resources may comprise, for example,hardware resources, software resources, data resources, and/or powerresources. Hardware resources may comprise, for example, access tohardware components, peripheral devices, processing time, memory, and/orprocessor cores and/or threads. Software resources may comprise, forexample, data, programmatic functionality, and/or device drivers. Dataresources may comprise storage amounts, access to particular data,certificates for authentication, and/or data transmission and receptionresources. Power resources may comprise usage of a device's powersupply, whether it comprise battery power and/or outside power.

For example, a request to download a large file may be recognized asconsuming a large amount of metered data. User device 100 may comprise alimited amount of pre-paid data and/or may receive a periodic allotmentof data from a data service provider (e.g., two gigabytes per month).Exceeding the pre-paid or allocated data may then incur a charge foradditional data resources. As a user consumes the metered data,compliance and/or cost control policies may identify actions that mayuse the metered data and respond accordingly, such as by prioritizingrequests for use of the metered resource and/or forbidding theperformance of actions that may use large amounts and/or a largepercentage of the remaining metered resource.

In some embodiments, non-approved applications may be limited and/orprohibited from consuming metered resources. For example, gameapplications that consume metered data may be prevented from using dataduring work hours, or if a certain threshold of data usage has beenreached. In some embodiments, the threshold may be statically defined,such by prohibiting certain applications (either specifically or as acategorical group) from using more than 10% of a monthly data quota. Insome embodiments, the threshold may be dynamic, such as by pro-ratingthe amount of data the application may consume on a periodic (e.g.,daily, weekly, monthly, etc.) basis and/or reducing the amount of datathe application may consume as a monthly data quota is neared.

In some embodiments, a management server may attempt to communicate witha mobile device, such as by requesting that the device check-in with themanagement server. If the management server does not receive a responsefrom the device, or the management server receives a response that thedevice has insufficient data remaining, the management server may send amessage to the device to ask/instruct a user of the device to replenishthe data plan to a sufficient level and/or authorize the device toexceed the data allocation, possibly at an additional cost. In someembodiments, the management server may integrate with a carrierassociated with the mobile device to an extent to allow the managementserver to request that the carrier replenish the data plan to asufficient level on behalf of the user of the device. In someembodiments, in response to a failure to replenish the data plan byeither the user of the device or the carrier, the management server maysend a message to the device to prohibit the device from usingdata-intensive features until the data plan is replenished. For example,the device may be limited to wi-fi only data operations once data leveldrops below configurable level.

In some embodiments, a management server may attempt to communicate witha mobile device, such as by requesting that the device check-in with themanagement server. If the management server does not receive a responsefrom the device, or the management server receives a response that thedevice has insufficient battery power remaining, the management servermay send a message to the device instructing the user of the device toreplenish the battery to a sufficient level. In response to a failure toreplenish the battery, the management server may send a message to thedevice to prohibit the device from using battery-intensive featuresuntil the battery is replenished.

In some embodiments, different data transmission protocols may beenabled based on various conditions, such as availability of resources,time and location of a device. Because cellular data tends to be moreexpensive than wireless networking data, restricting cellular usageuntil necessary is desirable to control the cost of network usage. Forinstance, if content is required to be distributed to a device in 7 days(such as for flight manuals for FAA required monthly updates), then thedevice may be restricted to downloading the content over wi-fi for thenext 6 days. If the device does not come into contact with a wi-finetwork within the 6 day window, the device may toggle to enablecellular transmission of the content on the last day to ensure that thelegally required documents are on the device before the required date.

In some embodiments, control of the transmission protocol enabled fordistribution of content and/or assets may be based on the location ofthe device. Public wi-fi networks may be untrusted, for example,subjecting a device to potential security risks. Non-native, or roaming,cellular networks may be similarly susceptible to potential securityrisks. Additionally, charges related to accessing “guest” wi-fi networksand “roaming” cellular networks may apply. Location-based policies maybe configured for which transmission protocols are allowed. For example,a device in the USA may be allowed to use any wi-fi network, includingpublic and/or guest wireless networks, such as those at coffee shops andhotels, whereas the same device, while in other countries, may not beallowed to use public wi-fi networks because of the potential threats toasset security. Similarly, the device may be only be allowed to accessroaming cellular networks in specific countries, due to costs and/orconcern over the security of regional cellular carriers. In someembodiments, toggling between cellular and wi-fi data may be associatedwith a learned configuration. For example, the configuration may takeinto account a user's past movements to determine whether the device islikely to be on a secure wi-fi network in time. The configuration mayalso take the size of the data chunk to be downloaded into account toensure the toggle is made in time before the info is needed. In someembodiments, an option to ask the user whether to proceed if dataroaming charges will apply or a large amount of data will be requiredmay be presented for approval and/or confirmation. In some embodiments,application use may be disabled unless wi-fi network access and/or avirtual private network (VPN) is enabled. This may be used inconjunction with other network tunneling techniques, such as where anapplication routes network traffic through a security or managementserver.

FIG. 1 is a block diagram of a user device 100 comprising a processor105 and a memory 110. Depending on the configuration and type of device,memory 110 may comprise, but is not limited to, volatile (e.g. randomaccess memory (RAM)), non-volatile (e.g. read-only memory (ROM)), flashmemory, or any combination. Memory 110 may store executable programs andrelated data components of various applications and modules forexecution by user device 100. Memory 110 may be coupled to processor 105for storing configuration data and operational parameters, such ascommands that are recognized by processor 105.

Basic functionality of user device 100 may be provided by an operatingsystem 115 contained in memory 100. One or more programmed softwareapplications may be executed by utilizing the computing resources inuser device 100. Applications stored in memory 110 may be executed byprocessor 105 (e.g., a central processing unit or digital signalprocessor) under the auspices of operating system 115. For example,processor 105 may be configured to execute applications such as webbrowsing applications, email applications, instant messagingapplications, and/or other applications capable of receiving and/orproviding data.

Data provided as input to and generated as output from theapplication(s) may be stored in memory 110 and read by processor 105from memory 110 as needed during the course of application programexecution. Input data may be data stored in memory 110 by a secondaryapplication or other source, either internal or external to user device100, or possibly anticipated by the application and thus created withthe application program at the time it was generated as a softwareapplication program. Data may be received via any of a plurality ofcommunication ports 120(A)-(C) of user device 100. Communication ports120(A)-(C) may allow user device 100 to communicate with other devices,and may comprise components such as an Ethernet network adapter, amodem, and/or a wireless network connectivity interface. For example,the wireless network connectivity interface may comprise one and/or moreof a PCI (Peripheral Component Interconnect) card, USB (Universal SerialBus) interface, PCMCIA (Personal Computer Memory Card InternationalAssociation) card, SDIO (Secure Digital Input-Output) card, NewCard,Cardbus, a modem, a wireless radio transceiver, and/or the like.

User device 100 may also receive data as user input via an inputcomponent 125, such as a keyboard, a mouse, a pen, a stylus, a soundinput device, a touch input device, a capture device, etc. A capturedevice may be operative to record user(s) and capture spoken words,motions and/or gestures, such as with a camera and/or microphone. Thecapture device may comprise any speech and/or motion detection devicecapable of detecting the speech and/or actions of the user(s).

Data generated by applications may be stored in memory 110 by theprocessor 105 during the course of application program execution. Datamay be provided to the user during application program execution bymeans of a display 130. Consistent with embodiments of this disclosure,display 130 may comprise an integrated display screen and/or an outputport coupled to an external display screen.

Memory 110 may also comprise a platform library 140. Platform library140 may comprise a collection of functionality useful to multipleapplications, such as may be provided by an application programminginterface (API) to a software development kit (SDK). These utilities maybe accessed by applications as necessary so that each application doesnot have to contain these utilities thus allowing for memory consumptionsavings and a consistent user interface. The platform library 140 mayalso provide functionality associated with app-wrapping, defined hereinas applications that have been modified to add additional functionality.For example, an existing game application may be wrapped to providesupport for compliance rules such as those that prohibit the applicationfrom executing during work hours. The platform library 140 is describedin greater detail below with respect to FIG. 3.

Furthermore, embodiments of this disclosure may be practiced inconjunction with a graphics library, other operating systems, or anyother application program and is not limited to any particularapplication or system. The devices described with respect to the Figuresmay have additional features or functionality. For example, user device100 may also include additional data storage devices (removable and/ornon-removable) such as, for example, magnetic disks, optical disks, ortape (not shown).

User device 100 may comprise a desktop computer, a laptop computer, apersonal digital assistant, a cellular telephone, a set-top box, a musicplayer, a web pad, a tablet computer system, a game console, and/or anyother device with like capability.

User device 100 may store in a data store 150 a device profile 152 and aplurality of user preferences 154. Device profile 152 may comprise anindication of the current position of user device 100 and/or indicationsof the hardware, software, and security attributes which describe userdevice 100. For instance, device profile 152 may represent hardwarespecifications of user device 100, version and configuration informationof various software program and hardware components installed on userdevice 100, data transmission protocols enabled on user device 100,version and usage information of various assets stored on user device100, and/or any other attributes associated with the state of userdevice 100. The device profile 152 may further comprise data indicatinga date of last virus scan of user device 100, a date of last access byan IT representative, a date of last service by the IT representative,and/or any other data indicating maintenance and usage of user device100. Furthermore, the device profile 152 may comprise indications of thepast behavior of associated users, such as assets accessed, charges forasset accesses, and the inventory accessed from such assets. Userpreferences 154 may comprise a listing of factors that may affect theexperience of the user. In particular, user preferences 154 may includeindications of the user's age, gender, bodily traits, preferred assettypes, preferred venue assets, and combinations thereof.

User device 100 may also store at least one asset 156 in the data store150. Assets 156, for instance, may include any electronic data, such asdatabases, applications, text files, word processor files, spreadsheetfiles, presentation files, graphic files, audio files, photographicfiles, video files, applications and application files, and/or the like.More specifically, assets 156 may include at least one of the followingfile types: data files, audio files, video files, three-dimensionalimage files, raster image files, vector image files, page layout files,spreadsheet files, database files, executable files, CAD files, webfiles, plug-in files, font files, system files, settings files, encodedfiles, compressed files, disk image files, developer files, backupfiles, and/or any other files.

The user device 100 may further be configured to execute variousapplications. For example, the user device 100 may be configured toexecute applications such as web browsing applications, emailapplications, instant messaging applications, and/or other applicationscapable of receiving and/or rendering assets 156 on display 130. Anyapplications capable of receiving and/or rendering assets 156 on display130 are generally referred to herein as a “client side application”. Theclient side application(s) may be stored in the memory of the userdevice 100. In some embodiments, a client side application may comprisea secure container program that may be authorized to receive and renderselected assets 156. The secure container program may further contain adecryption key specific to a distribution service that enables thesecure container program to decrypt assets 156 transmitted by thedistribution service that have been encrypted by the distributionservice to prevent unauthorized programs from accessing the assets 156on the user device 100.

FIG. 2 is a block diagram view of an operating environment 200comprising user device 100 in communication with a asset server 210,which may provide one or more asset(s) 215, and a compliance server 220,which may provide a management application 230, via a network 240. Userdevice 100, asset server 210, and/or compliance server 220 may beoperative to communicate via network 240. In some embodiments,management application 230 may be operative to execute on user device100 and/or asset server 210.

The compliance server 220 may comprise, for example, cloud-basedsolutions, server computers and/or any other system providing devicemanagement capability. For purposes of convenience, the complianceserver 220 is referred to herein in the singular, although it isunderstood that a plurality of servers may be employed in thearrangements as descried herein. Furthermore, in some embodiments,multiple compliance servers 220 may operate on the same server computer.The components executed on the compliance server 220, for example, maycomprise various applications, services, processes, systems, engines, orfunctionality not disclosed in detail herein.

The compliance server 220 may comprise management application 230comprising a plurality of compliance rules and/or policies that may beapplicable to user device 100. While the management application 230 isshown as within the compliance server 220, the management application230 may alternately be within the user device 100 and/or remotelylocated on the asset server 210 and may be remotely updated periodicallyby compliance server 220 according to common over-the-air (OTA) updatingmethods. Attempts by user device 100 to perform certain functionality onuser device 100 may require user device 100 to be in compliance with oneand/or more of the compliance policies/rules. Depending on thesensitivity of a given functionality, different compliance rules may benecessary to ensure that the functionality is adequately restricted.Some functionality may only require ensuring that the proper user isrequesting the functionality. Other assets may require compliance withmore stringent authorization rules, such as determining whether thefunctionality is restricted during certain time windows. Accordingly,user device 100 and/or compliance server 220 may be operative todetermine whether the user of user device 100 is authorized to performrequested functionality at the time the user requests to perform suchfunctionality.

Compliance server 220 may use the compliance rules to impose hardwarerestrictions regarding the use of specific wireless devices and specificwireless device features, such as, for instance, cameras, Bluetooth,IRDA, tethering, external storage, a mobile access point, and/or otherhardware restrictions. The compliance rules may also impose softwarerestrictions such as the use of specific wireless device operatingsystems or applications, internet browser restrictions, screen capturefunctionality, and/or other software restrictions. Mobile devicemanagement restrictions included in the compliance rules may compriseencryption requirements, firmware versions, remote lock and wipefunctionalities, logging and reporting features, GPS tracking, and/orother mobile device management features.

The compliance server 220 may determine whether the devicecharacteristics of a requesting device (e.g. user device 100) satisfyone or more of the restrictions enumerated in the compliance rules. Forexample, the compliance server 220 may determine that a requestingdevice that has a camera, Bluetooth capability, and is executing aspecified version of an operating system is compliant with thecompliance rules. As another example, the compliance server 220 maydetermine that a requesting device that is associated with an externalstorage unit and has screen capture functionality enabled is notcompliant with the compliance rules.

In some embodiments, an agent application 234 executed on user device100 may make the compliance determination based on the device profile,credentials, and/or user preferences. For instance, the agentapplication 234 may monitor calls by applications, such as a clientapplication 235, and/or a secure application 236, on user device 100 tothe operating system 115 of user device 100 to determine whether userdevice 100 seeks to perform functionality associated with one and/ormore of the compliance rules described above. Additionally, the agentapplication 234 on user device 100 may approve and/or deny theassociated functionality requests. For instance, the agent application234 may instruct operating system 115 on user device 100 to disable thecamera of user device 100 in response to a determination that acompliance rule specifies that the camera cannot be used at the time ofthe request by the user device 100 to operate the camera.

In some embodiments, the agent application 234 executed on user device100 may rely on compliance server 220 to determine whether a givenfunctionality request on user device 100 is permitted according to thecompliance rules. For instance, the agent application may transmit afunctionality request, a device profile, credentials, and/or userpreferences to compliance server 220 so that compliance server 220 maydetermine whether user device 100 seeks to perform functionality thatmay violate a given compliance rule. Additionally, compliance server 220may approve and/or deny the associated functionality requests. Forinstance, compliance server 220 may instruct the agent application 234on user device 100 to instruct operating system 115 to activate a VPNsecurity profile prior to opening a document and/or link.

In some embodiments, the compliance rules may comprise device settingsand/or executable instructions that define which functionality theoperating system 115 of user device 100 is authorized to perform.Furthermore, the compliance rules may comprise a list of functions, suchas those provided by APIs associated with operating system 115 and/orplatform library 140, that may be treated as protected functions. Callsto these functions, such as calls to retrieve login credentials, mayresult in checks by user device 100 and/or compliance server 220 forcompliance with the compliance rules.

In some embodiments, the agent 234 may perform a set of orderedoperations to accomplish a requested function. These operation sets maybe defined by the user device 100 and/or compliance server 220 and maycomprise one and/or more operations to determine whether the user device100 is in compliance with policies from policy store 230. The agent 234may control at least one respective computing resource of the userdevice 100. The operations may include configuring at least onerespective computing resource of the user device 100 such as restrictingaccess to at least one asset managed by the agent 234.

The Network 240 may comprise, for example, any type of wired and/orwireless network such as a wireless local area network (WLAN), awireless wide area network (WWAN), Ethernet, fiber-optic network, and/orany other type of wired and/or wireless network now known or laterdeveloped. Additionally, the Network 240 may be or include the Internet,intranets, extranets, microwave networks, satellite communications,cellular systems, PCS, infrared communications, global area networks, orother suitable networks, etc., or any combination of such networks.

FIG. 3 is a block diagram illustrating greater detail regarding theplatform library 140. An application 310 and/or a wrapped application320 may communicate with platform library 140 via a plurality offunction calls comprising an application programming interface (API)330. In some embodiments, application 310 and wrapped application 320may utilize the same calls. In some embodiments, application 310 andwrapped application 320 may utilize different versions of the functioncalls despite being associated with the same and/or similarfunctionality. The function calls may allow the applications to accessvarious features and functionality provided by the platform library 140,such as a set of device management functions 350, a set of applicationmanagement functions 352, and/or a set of content management functions354.

Application 310 may comprise an application that has been modified atthe source code level to incorporate calls associated with a softwaredevelopment kit (SDK). The SDK may provide a set of function calls thatmay be incorporated via a library during the application's compile stepand may then call out to API 330.

Wrapped application 320 may comprise a modified binary executable file.The modifications may comprise the injection of precompiled functions toan existing application that may call out to API 330. In someembodiments, app-wrapping may be accomplished dynamically uponinstallation and/or execution of an application without requiringrecompilation of the application's source code. App-wrapping may thuscomprise a preferred and/or more convenient means of modifying anapplication for which the source code is unavailable.

In some embodiments, compliance rules such as those provided bycompliance server 220 may control which functions of API 330 are enabledand/or used in application 310 and wrapped application 320. For example,users in a sales group may be permitted by compliance server 220 todownload an enterprise's expense submitting application withoutmodification, while users in an accounting group may receive a modifiedversion of the same application. The modified version may rely onfunctionality provided by platform library 140 to enhance theapplication's security, such as by adding a call to an encryptionfunction for communications from the application that are intended fortransmission over network 240.

Various functions may be provided by platform library 240, includingauthentication, authorization, and determination functions. Devicemanagement functions 350 may comprise, for example, functions operativeto determine whether user device 100 has been compromised and/orjailbroken, and/or to identify a location of the device via accessing aglobal positioning system associated with the device. Applicationmanagement functions 352 may comprise, for example, functions operativeto encrypt data and/or communications used by application 310 andwrapped application 320, to distribute configuration information, toprovide authorization and/or credentials, and/or to provide logging andreporting functionality. Content management functions 354 may comprise,for example, functions to update shared content data used by application310 and wrapped application 320 and/or to provide branding functionalityto alter the appearance of application 310 and wrapped application 320.

Other management functionality may comprise enforcing compliance rulesand/or restrictions distributed by compliance server 220, which may beaccomplished at the device, application, and/or content level. Suchcompliance rules may comprise time, date and/or location basedrestrictions on accessing user device 100, application 310, wrappedapplication 320, local assets 156, and/or remote assets 212.

In some embodiments, performance of various actions by user device 100may be contingent on approval, such as may be provided by agent 234and/or a call to a compliance verification function via API 330. Suchapproval may require a determination as to whether necessary resourcesare available and/or authorized for use to accomplish the action. Incases where the necessary resources comprise metered resources, thecompliance rules may enforce restrictions on the use of those meteredresources as such resources may be associated with an additional cost toreplenish once they are depleted.

FIG. 4 is a flow chart setting forth the general stages involved in amethod 400 consistent with embodiments of this disclosure for providingfunctionality management via application modification. Method 400 may beimplemented using elements of operating environment 200 as describedabove. Ways to implement the stages of method 400 will be described ingreater detail below. Method 400 may begin at starting block 405 andproceed to stage 410 where user device 100 may receive a request toperform an action. For example, secure application 237 may attempt toretrieve assets 212 from asset server 210.

From stage 410, method 400 may advance to stage 415 where user device100 may determine whether the requested action may consume a meteredresource. For example, a request to retrieve content assets 212 fromasset server 210 may be determined to consume metered data and/ormetered battery power and/or a financial charge may be incurred toperform the requested action.

If the requested action is determined to require the use of meteredstage 415, method 400 may advance to stage 420 where user device 100 maydetermine whether the requested action is compliant with at least onecompliance and/or management policy. For example, compliance server 220may distribute a management policy requiring user device 100 to maintaina sufficient level of metered data available to regularly communicatewith compliance server 220, such as to transmit logs, messages, errors,etc. If the requested action would deplete the amount of metered dataavailable below this level, the action may be determined to be out ofcompliance. For another example, a management policy may requireapplications to consume less than a given amount of battery power perday. If the requested action is associated with such a restrictedapplication, and the amount of battery power required to perform theaction would exceed the configurable threshold, the action may bedetermined to be out of compliance.

In some embodiments, user device 100 may identify a plurality of actionsassociated with completing the requested action and calculate the totalresources consumed by performing the action. For example, a request todownload assets 212 for storage on user device 100 may consume metereddata resources for negotiating the network transfer, downloading theasset, confirming and/or acknowledging the completed transfer, andtransmitting an event log to compliance server 220. Storing thedownloaded copy of asset 212 may consume data storage resources, andeach of these operations may consume battery power resources. One and/ora plurality of management policies may govern the use of each of theseresources, and the request to perform the action may need to bedetermined to be compliant with one and/or more of the resource usepolices to be determined to be in overall compliance.

If the request to perform the action is determined to be in complianceat stage 420, or if the action is determined not to consume any meteredresources at stage 415, method 400 may advance to stage 425 where userdevice 100 may authorize the requested action to be performed. Forexample, agent application 234 may be configured to receive the requeststo perform actions and/or intercept such requests from operating system115, platform library 140, and/or other applications. Once the action isapproved, agent 234 may authorize the action to be performed, such as bycausing the operating system 115 to complete the requested action.

If the requested action is determined to be out of compliance at stage420, method 400 may advance to stage 430 where user device 100 mayidentify a priority of the requested action. For example, a request todownload legally mandated content assets by a particular time frame(e.g., flight manual updates), may be rated as a very high priority,while a request to update a game application may be rated as a lowpriority. These priority ratings may be established, for example, byadministrators using rules distributed by compliance server 220. Theserules may be configured to assign higher priorities to work and/orenterprise associated functions. These rules may also be user and/oruser group dependent. For example, users in a support and/or sales groupmay have higher priorities assigned to email retrieval using metereddata resources than users in an accounting group.

From stage 430, method 400 may advance to stage 435 where user device100 may determine whether the identified priority is high enough tooverride the non-compliance determined at stage 420. For example,priority scores may be assigned to various actions and/or stepsassociated with performing the action, and the score may be compared toa configurable threshold. In some embodiments, such a threshold may bestatically defined, such as where a particular metered resource may onlybe consumed if the priority is greater than a particular thresholdvalue. In some embodiments, the threshold may comprise a dynamic valuetaking factors into account such as the time of the request, thelocation of user device 100, and an amount of the metered resourceremaining.

If the requested action is determined to comprise a high enoughpriority, method 400 may return to stage 425 and authorize the requestto perform the action, as described above. Otherwise, or afterauthorizing the request at stage 425, method 400 may end at stage 450.

Methods, systems, apparatuses, and/or computer-readable media forproviding device management via application modification may beprovided. In some embodiments, a request to perform an action may bereceived. Upon determining that the action is associated with a meteredresource, a further determination may be made as to whether the requestcomplies with at least one management policy. In response to determiningthat the request complies with the at least one management policy, therequested action may be authorized and/or caused to be performed. Themetered resource may comprise, for example a data communicationresource, a power resource, a financial resource, and/or a hardwareresource. In some embodiments, modification of an application maycomprise introducing new function calls to an application programminginterface (API) operative to receive the request to perform the action,such as by modifying source code and recompiling the application to adda software development kit (SDK) library and/or modifying the binaryexecutable of an application via app-wrapping. Such API calls may, forexample, modify an application to redirect a plurality of requests toperform action to a second application.

In some embodiments, receiving the request to perform the action maycomprise intercepting the request from an application by an agentapplication. In some embodiments, determining whether the action isassociated with a metered resource may comprise determining whetherauthorizing the action to be performed would consume at least a portionof the metered resource via identifying a plurality of functionsassociated with the action to be performed and computing an amount ofthe metered resource consumed by each of the plurality of functions.Determining whether the request complies with the at least onemanagement policy may comprise determining whether the computed amountof the metered resource consumed by each of the plurality of functionsexceeds a quota amount of the metered resource.

In some embodiments, a priority may be associated with the request toperform the action. If the priority exceeds a threshold value, but therequest is determined to be non-compliant with a management and/or costcontrol policy, a notification and/or a request for a user to overridethe policy may be displayed.

In some embodiments, upon receiving a request to perform an actionassociated with an application, a determination as to whether performingthe action will utilize a metered resource may be made. If so, a furtherdetermination may be made as to whether the request complies with atleast one cost compliance policy and, in response to determining thatthe request complies with the at least one cost compliance policy, theaction may be caused and/or authorize to be performed. Such costcompliance policies may, for example, be associated with a monthlysubscription and/or a pre-paid quantity of the metered resource. Thecompliance policies may comprise a plurality of factors and/orconditions, such as location of a device, time of the request, type ofrequest, and/or category of request (e.g., work or personal).

The embodiments and functionalities described herein may operate via amultitude of computing systems, including wired and wireless computingsystems, mobile computing systems (e.g., mobile telephones, tablet orslate type computers, laptop computers, etc.). In addition, theembodiments and functionalities described herein may operate overdistributed systems, where application functionality, memory, datastorage and retrieval and various processing functions may be operatedremotely from each other over a distributed computing network, such asthe Internet or an intranet. User interfaces and information of varioustypes may be displayed via on-board computing device displays or viaremote display units associated with one or more computing devices. Forexample user interfaces and information of various types may bedisplayed and interacted with on a wall surface onto which userinterfaces and information of various types are projected. Interactionwith the multitude of computing systems with which embodiments of thisdisclosure may be practiced include, keystroke entry, touch screenentry, voice or other audio entry, gesture entry where an associatedcomputing device is equipped with detection (e.g., camera) functionalityfor capturing and interpreting user gestures for controlling thefunctionality of the computing device, and the like. The Figures aboveand their associated descriptions provide a discussion of a variety ofoperating environments in which embodiments of this disclosure may bepracticed. However, the devices and systems illustrated and discussedwith respect to the Figures are for purposes of example and illustrationand are not limiting of a vast number of computing device configurationsthat may be utilized for practicing embodiments of this disclosure asdescribed herein.

The term computer readable media as used herein may include computerstorage media. Computer storage media may include volatile andnon-volatile, removable and non-removable media implemented in anymethod or technology for storage of information, such as computerreadable instructions, data structures, program modules, or other data.System memory, removable storage, and non-removable storage are allcomputer storage media examples (i.e., memory storage.) Computer storagemedia may include, but is not limited to, RAM, ROM, electricallyerasable read-only memory (EEPROM), flash memory or other memorytechnology, CD-ROM, digital versatile disks (DVD) or other opticalstorage, magnetic cassettes, magnetic tape, magnetic disk storage orother magnetic storage devices, or any other medium which can be used tostore.

The term computer readable media as used herein may also includecommunication media. Communication media may be embodied by computerreadable instructions, data structures, program modules, non-transitorymedia, and/or other data in a modulated data signal, such as a carrierwave or other transport mechanism, and includes any information deliverymedia. The term “modulated data signal” may describe a signal that hasone or more characteristics set or changed in such a manner as to encodeinformation in the signal. By way of example, and not limitation,communication media may include wired media such as a wired network ordirect-wired connection, and wireless media such as acoustic, radiofrequency (RF), infrared, and other wireless media.

A number of applications and data files may be used to perform processesand/or methods as described above. The aforementioned processes areexamples, and a processing unit may perform other processes. Otherprogramming modules that may be used in accordance with embodiments ofthis disclosure may include electronic mail, calendar, and contactsapplications, data processing applications, word processingapplications, spreadsheet applications, database applications, slidepresentation applications, drawing or computer-aided applicationprograms, etc.

Generally, consistent with embodiments of this disclosure, programmodules may include routines, programs, components, data structures, andother types of structures that may perform particular tasks or that mayimplement particular abstract data types. Moreover, embodiments of thedisclosure may be practiced with other computer system configurations,including hand-held devices, multiprocessor systems,microprocessor-based or programmable consumer electronics,minicomputers, mainframe computers, and the like. Embodiments of thisdisclosure may also be practiced in distributed computing environmentswhere tasks are performed by remote processing devices that are linkedthrough a communications network. In a distributed computingenvironment, program modules may be located in both local and remotememory storage devices.

Furthermore, embodiments of this disclosure may be practiced in anelectrical circuit comprising discrete electronic elements, packaged orintegrated electronic chips containing logic gates, a circuit utilizinga microprocessor, or on a single chip containing electronic elements ormicroprocessors. Embodiments of this disclosure may also be practicedusing other technologies capable of performing logical operations suchas, for example, AND, OR, and NOT, including but not limited tomechanical, optical, fluidic, and quantum technologies. In addition,embodiments of the disclosure may be practiced within a general purposecomputer or in any other circuits or systems.

Embodiments of this disclosure may, for example, be implemented as acomputer process and/or method, a computing system, an apparatus,device, or appliance, and/or as an article of manufacture, such as acomputer program product or computer readable media. The computerprogram product may be a computer storage media readable by a computersystem and encoding a computer program of instructions for executing acomputer process. The computer program product may also be a propagatedsignal on a carrier readable by a computing system and encoding acomputer program of instructions for executing a computer process.Accordingly, the present disclosure may be embodied in hardware and/orin software (including firmware, resident software, micro-code, etc.).In other words, embodiments of the present disclosure may take the formof a computer program product on a computer-usable or computer-readablestorage medium having computer-usable or computer-readable program codeembodied in the medium for use by or in connection with an instructionexecution system. A computer-usable or computer-readable medium may beany medium that can contain, store, communicate, propagate, or transportthe program for use by or in connection with the instruction executionsystem, apparatus, or device.

The computer-usable or computer-readable medium may be, for example butnot limited to, an electronic, magnetic, optical, electromagnetic,infrared, or semiconductor system, apparatus, device, or propagationmedium. More specific computer-readable medium examples (anon-exhaustive list), the computer-readable medium may include thefollowing: an electrical connection having one or more wires, a portablecomputer diskette, a random access memory (RAM), a read-only memory(ROM), an erasable programmable read-only memory (EPROM or Flashmemory), an optical fiber, and a portable compact disc read-only memory(CD-ROM). Note that the computer-usable or computer-readable mediumcould even be paper or another suitable medium upon which the program isprinted, as the program can be electronically captured, via, forinstance, optical scanning of the paper or other medium, then compiled,interpreted, or otherwise processed in a suitable manner, if necessary,and then stored in a computer memory.

Embodiments of this disclosure may be practiced via a system-on-a-chip(SOC) where each and/or many of the elements described above may beintegrated onto a single integrated circuit. Such an SOC device mayinclude one or more processing units, graphics units, communicationsunits, system virtualization units and various applicationfunctionalities, all of which may be integrated (or “burned”) onto thechip substrate as a single integrated circuit. When operating via anSOC, the functionality, described herein, with respect to trainingand/or interacting with any element may operate via application-specificlogic integrated with other components of the computing device/system onthe single integrated circuit (chip).

Embodiments of this disclosure are described above with reference toblock diagrams and/or operational illustrations of methods, systems, andcomputer program products according to embodiments of the disclosure.The functions/acts noted in the blocks may occur out of the order asshown in any flowchart. For example, two blocks shown in succession mayin fact be executed substantially concurrently or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality/acts involved.

While certain embodiments have been described, other embodiments mayexist. Furthermore, although embodiments of the present disclosure havebeen described as being associated with data stored in memory and otherstorage mediums, data can also be stored on or read from other types ofcomputer-readable media, such as secondary storage devices, like harddisks, floppy disks, or a CD-ROM, a carrier wave from the Internet, orother forms of RAM or ROM. Further, the disclosed methods' stages may bemodified in any manner, including by reordering stages and/or insertingor deleting stages, without departing from the disclosure.

Embodiments of the present disclosure, for example, are described abovewith reference to block diagrams and/or operational illustrations ofmethods, systems, and computer program products according to embodimentsof the disclosure. The functions/acts noted in the blocks may occur outof the order as shown in any flowchart. For example, two blocks shown insuccession may in fact be executed substantially concurrently or theblocks may sometimes be executed in the reverse order, depending uponthe functionality/acts involved.

While certain embodiments of the disclosure have been described, otherembodiments may exist. Furthermore, although embodiments of the presentdisclosure have been described as being associated with data stored inmemory and other storage mediums, data can also be stored on or readfrom other types of computer-readable media, such as secondary storagedevices, like hard disks, floppy disks, or a CD-ROM, a carrier wave fromthe Internet, or other forms of RAM or ROM. Further, the disclosedmethods' stages may be modified in any manner, including by reorderingstages and/or inserting or deleting stages, without departing from thedisclosure.

All rights including copyrights in the code included herein are vestedin and the property of the Assignee. The Assignee retains and reservesall rights in the code included herein, and grants permission toreproduce the material only in connection with reproduction of thegranted patent and for no other purpose.

While the specification includes examples, the disclosure's scope isindicated by the following claims. Furthermore, while the specificationhas been described in language specific to structural features and/ormethodological acts, the claims are not limited to the features or actsdescribed above. Rather, the specific features and acts described aboveare disclosed as example for embodiments of the disclosure.

What is claimed is:
 1. A method comprising: receiving a request toperform an action associated with an application; determining whetherperforming the action will utilize a metered resource; in response todetermining that performing the action will utilize the meteredresource, determining whether the request complies with at least onecost compliance policy; and in response to determining that the requestcomplies with the at least one cost compliance policy, authorizing theaction to be performed.
 2. The method of claim 1, wherein the costcompliance policy is associated with a monthly data subscription.
 3. Themethod of claim 1, wherein the cost compliance policy is associated witha pre-paid quantity of the metered resource.
 4. The method of claim 1,wherein the cost compliance policy is location-dependent.
 5. The methodof claim 1, wherein the cost compliance policy is time-dependent.
 6. Themethod of claim 1, further comprising providing an applicationprogramming interface (API) call operative to receive the request. 7.The method of claim 1, wherein receiving the request to perform theaction comprises intercepting the request from an application by anagent application.
 8. The method of claim 1, further comprising:identifying a plurality of functions associated with the action to beperformed; and computing an amount of the metered resource consumed byeach of the plurality of functions.
 9. The method of claim 8, whereindetermining whether the request complies with the at least one costcompliance policy comprises determining whether the computed amount ofthe metered resource consumed by each of the plurality of functionsexceeds a quota amount of the metered resource.
 10. The method of claim1, wherein the at least one cost compliance policy is associated with aplurality of metered resources.
 11. A system comprising: a memorystorage; and a processor coupled to the memory storage, wherein theprocessor is configured to: receive a request to perform an actionassociated with an application, determine whether performing the actionwill utilize a metered resource; in response to determining that theaction will utilize the metered resource, determine whether the requestcomplies with at least one cost compliance policy; and in response todetermining that the request complies with the at least one costcompliance policy, authorize the action to be performed.
 12. The systemof claim 11, wherein the processor being configured to receive therequest comprises the processor being configured to modify anapplication to redirect a plurality of requests to perform actions to asecond application.
 13. The system of claim 11, wherein the secondapplication comprises a communicatively coupled remote application. 14.The system of claim 11, wherein the request to perform the actioncomprises a priority.
 15. The system of claim 14, wherein the processor,in response to determining that the request does not comply with the atleast one cost compliance policy, is configured to: determine whetherthe priority associated with the request to perform the action exceeds athreshold, and in response to determining that the priority associatedwith the request to perform the action exceeds a threshold, authorizethe action to be performed.
 16. A computer-readable medium which storesa set of instructions that when executed performs a method executed bythe set of instructions comprising: receiving a request to perform anaction associated with an application; determining whether performingthe action will utilize a metered resource; in response to determiningthat performing the action will utilize the metered resource,determining whether the request complies with at least one costcompliance policy; and in response to determining that the requestcomplies with the at least one cost compliance policy, authorizing theaction to be performed.
 17. The computer-readable medium of claim 16,wherein the application comprises a modified version of an application.18. The computer-readable medium of claim 17, wherein the modificationto the application comprises inserting at least one applicationprogramming interface (API) call to the application, and wherein the APIcall is associated with determining whether the request complies with atleast one cost compliance policy.
 19. The computer-readable medium ofclaim 17, wherein the modification to the application is associated witha plurality of source code of the application.
 20. The computer-readablemedium of claim 17, wherein the modification to the application isassociated with a binary executable of the application.